As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
Information handling systems often employ storage resources (e.g., hard disk drives) to store data and programs of instructions for later retrieval. Increasingly, information handling systems employ solid-state storage devices, (e.g., solid-state drives), in lieu of or in addition to traditional magnetic hard disk drives. A solid-state device (SSD) is a data storage device that uses solid-state memory (e.g., flash memory) to store persistent data. An SSD may emulate a hard disk drive interface, thus easily replacing it in most applications.
SSDs often use NAND flash memory as their underlying storage medium. One of the limitations for writing to NAND flash memory is that a page of memory must be empty before it is written to. Thus, if data exists in the page, the page must be erased before data is written to it. An SSD may track data using a mapping table that maintains the location in the SSD for each data segment. Each data segment, which may also be known as a Flash Translation Layer (FTL) block may be the smallest unit in an SSD. Accordingly, two approaches may typically be used to rewrite data to an SSD. If the new data is smaller than the smallest unit size of the SSD (e.g., an FTL block), the existing data must be read and merged with the new data, with the merged data written to a new location in the SSD. After data is written to the new location, the old location is invalidated. If the new data is larger than the smallest unit size of the SSD, new data is written to a different location of the flash memory and the old location is invalidated.
Over time, the SSD may include many “dirty” blocks that contain invalid data. In order to continue writing to blocks, a controller of the SSD must “clean” these blocks by performing a function known as garbage collection. Garbage collection typically includes the act of determine blocks that include a threshold level of invalid data. Valid data from such blocks are collected, aggregated, and written to new SSD memory locations, and the blocks are erased. Such garbage collection can adversely affect the overall performance of an SSD (particularly writes), as the SSD must handle garbage collection while supporting input/output operations. Conversely, a new SSD with no data on the SSD may run much faster as writes occur, because the SSD need not perform garbage collection.
When testing the performance of SSDs, it is often desirable to compare SSDs under the same or similar operating conditions. Because a new SSD with no dirty blocks will perform faster than a heavily used one, testers often bring an SSD to a state similar to a “steady state” condition under actual use. Thus, before performance testing an SSD, a tester will often “precondition” the SSD to a steady state condition by writing the SSD one or multiple times. Because “steady state” can only be achieved if the SSD is written in the same manner as the traffic profile for testing, different pre-condition algorithms are often required.
However, many problems and disadvantages exist with traditional approaches to preconditioning. First, preconditioning an SSD by writing the SSD one or multiple times may take tens of hours to complete. Second, different types of preconditioning are used for tests with different traffic profiles, resulting in the need to perform preconditioning multiple times for large test suites. Third, a preconditioning algorithm may not provide consistent results between different SSD vendors. As SSDs increase in capacity, such problems and disadvantages may worsen.